package com.itheima.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

/**
 * @program: Spring_day01_01_IOC入门程序
 * @description: 通知
 * @author: xuejingjing
 * @create: 2021-08-02 19:42
 **/

//就是我这个通知里面的这谢方法，可以随便定义把？不是必须before,after???可以自定义不是必须的
public class AOPAdvice {

    /**
     * 带参和不带参,以及不用JoinPoint
     */
    public void before(JoinPoint jp){
        Object[] args = jp.getArgs();

        //System.out.println("before.."+args[0]);这个地方刚才报了一个索引越界，哦哦，原来如此，哦哦，继续学习哈。
//        老师，还有个问题
    }

    //前置通知
    public void before1(int x){
        System.out.println("before[int i].."+x);
    }

    //后置通知
    public void after(){
        System.out.println("after");
    }

    //返回后通知
    public void afterReturning(Object ret){
        System.out.println("afterReturning"+ret);
    }

    //异常对象t传到通知类
    public void afterThrowing(Throwable t){
        System.out.println("afterThrowing"+t.getMessage());
    }

    //环绕通知
    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("around before...");
        //对原始方法的调用
        pjp.proceed();
        System.out.println("around after...");
    }

}

